package com.om.calculator;

import static org.junit.Assert.assertEquals;

import org.junit.Before;
import org.junit.Test;

public class RpnCalculatorTest {
    private RpnCalculator calculator;

    @Before
    public void initializeCalculator() {
        calculator = new RpnCalculator();
    }

    private void validateResultIs(int expectedValue) {
        int sum = calculator.top();
        assertEquals(expectedValue, sum);
    }

    @Test
    public void canExecutePlus() {
        calculator.enter(4);
        calculator.enter(-21);
        calculator.execute("+");
        validateResultIs(4 + -21);
    }

    @Test
    public void canSubtract() {
        calculator.enter(4);
        calculator.enter(-21);
        calculator.minus();
        validateResultIs(4 - -21);
    }

    @Test
    public void canAddEmpty() {
        calculator.add();
        validateResultIs(0);
    }

    @Test
    public void threeNumberAddingOnlyLastTwo() {
        calculator.enter(3);
        calculator.enter(4);
        calculator.enter(4);
        calculator.add();
        validateResultIs(8);
    }

    @Test
    public void canAddTwoNumbers() {
        calculator.enter(40);
        calculator.enter(-13);
        calculator.add();
        validateResultIs(27);
    }
}
